package com.cskaoyan.javase.oop2._1extend._9final._1clazz;

/**
 * @description: final修饰class
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * final修饰class,表示最终的,最后的class.表示该类无法被继承
 * 语法:
 * [访问权限修饰符] final class 类名{
 *     //类体
 * }
 *
 * 注意事项:
 *      1,final修饰一个类后,除了让该类无法被继承外,它还是一个正常类,可以创建对象,可以访问成员变量或方法
 *          也可以继承别的类
 *      2,什么样的类需要被设置成final?
 *          设置为final --> 意味着无法被继承 --->
 *              1,成员不需要被复用的类
 *              2,自身已经足够完善和强大,不需要子类扩展
 *          满足以上两点后,为了class自身的安全(不让子类重写等操作),可以设置一个类为final
 *      3,实际开发中,很少会把一个类设置成final(因为没有太大必要)
 *          我们常见的final类在jdk源码当中,比如String,System,四类八种基本数据类型的包装类以及Void
 *
 */
public class Demo {
    public static void main(String[] args) {
        Father f = new Father();
        System.out.println(f.a);
    }
}
final class Father extends Demo{
    int a = 10;
}
//Cannot inherit from final 'com.cskaoyan.javase.oop2._1extend._9final._1clazz.Father'
//class Son extends Father{}
